Field of the Disclosure
The present disclosed embodiments relate generally to computing devices, and more specifically to frequency control of multi-core processors of computing devices.
Description of Related Art
Computing devices including devices such as smartphones, tablet computers, gaming devices, and laptop computers are now ubiquitous. These computing devices are now capable of running a variety of applications (also referred to as “apps”) and many of these devices include multiple processors to process tasks that are associated with apps. In many instances, multiple processors are integrated as a collection of processor cores within a single functional subsystem. It is known that the processing load on a mobile device may be apportioned to the multiple cores. Some sophisticated devices, for example, have multiple core processors that may be operated asynchronously at different frequencies. On these types of devices, the amount of work that is performed on each processor may be monitored by a central processing unit (CPU) governor to control a clock driver, and hence a clock speed, of the CPU to meet the workload needs.
A user's experience on a computing device is generally dictated by how smooth the user interface (“UI”) animation runs on the device. User interface (UI) animations (e.g., browser scroll, email scroll, home launcher scrolls etc.), and the visually attractive animations that are displayed in connection with application launches present an important use-case of periodic workload on the CPU that is also sporadic in nature. Usually a performance benchmark places fixed-sized and sustained workload on the CPU, which allows the CPU governor to latch on to the right clock frequency when running the benchmark. If a particular processing core has a heavy load, the governor can increase the frequency of that processing core. If a processing core has a relatively low load or is idle, the governor can decrease the frequency of that core (e.g., to reduce power consumption).
The Linux operating system for example, can use one of numerous governors, including the “ondemand” and “interactive” frequency governors, to name two non-limiting examples. Both of these governors monitor the workload on a given processor and adjust the corresponding clock frequency based on the workload. Their performance depends on their ability to quickly react to changes in the workload. Frequency governors today have a predefined sampling window (e.g., 20 ms typically) to sample the workload, and based on that workload, scale the CPU frequency. For steady-state CPU workloads, this fixed sampling window is adequate. But if the workload becomes sporadic (e.g., UI scrolling causes a sporadic workload), then this periodic sampling window can fail to react quickly enough to sudden spikes in the CPU workload.